WebClient এর মাধ্যমে OAuth 2.0 এবং Token Based Authentication

Java Technologies - স্প্রিং বুট ক্লায়েন্ট (Spring Boot Client) WebClient কনফিগারেশন এবং Customization |
58
58

Spring Boot WebClient ব্যবহার করে OAuth 2.0 এবং Token Based Authentication ইমপ্লিমেন্ট করা অত্যন্ত গুরুত্বপূর্ণ এবং জনপ্রিয় নিরাপত্তা ব্যবস্থা। এটি ব্যবহারকারীর অনুমোদিত টোকেন (Bearer Token) এর মাধ্যমে API-তে অ্যাক্সেস প্রদান করে। নিচে WebClient এর মাধ্যমে এই ফিচারগুলো ইমপ্লিমেন্ট করার বিস্তারিত দেখানো হয়েছে:


১. Maven Dependency যোগ করুন

OAuth 2.0 এবং WebClient ব্যবহারের জন্য নিম্নলিখিত ডিপেনডেন্সি যোগ করুন:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>

২. OAuth 2.0 Configurations

Spring Security এবং OAuth 2.0 এর মাধ্যমে WebClient কনফিগার করতে application.yml বা application.properties ফাইল আপডেট করতে হবে।

application.yml উদাহরণ:

spring:
  security:
    oauth2:
      client:
        registration:
          my-client:
            client-id: YOUR_CLIENT_ID
            client-secret: YOUR_CLIENT_SECRET
            scope: read
            authorization-grant-type: client_credentials
            token-uri: https://auth-server.com/oauth/token

৩. WebClient Bean Configuration

WebClient কনফিগার করার জন্য একটি @Bean ডিফাইন করতে হবে, যা স্বয়ংক্রিয়ভাবে OAuth 2.0 Token ব্যবহারে সক্ষম হবে।

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProvider;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProviderBuilder;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.oauth2.client.web.DefaultOAuth2AuthorizedClientManager;
import org.springframework.web.reactive.function.client.WebClient;

@Configuration
public class WebClientConfig {

    @Bean
    public WebClient webClient(OAuth2AuthorizedClientManager authorizedClientManager) {
        return WebClient.builder()
                .filter(new ServletOAuth2AuthorizedClientExchangeFilterFunction(authorizedClientManager))
                .build();
    }

    @Bean
    public OAuth2AuthorizedClientManager authorizedClientManager(
            ClientRegistrationRepository clientRegistrationRepository,
            org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository authorizedClientRepository) {

        OAuth2AuthorizedClientProvider authorizedClientProvider =
                OAuth2AuthorizedClientProviderBuilder.builder()
                        .clientCredentials()
                        .build();

        DefaultOAuth2AuthorizedClientManager authorizedClientManager =
                new DefaultOAuth2AuthorizedClientManager(clientRegistrationRepository, authorizedClientRepository);
        authorizedClientManager.setAuthorizedClientProvider(authorizedClientProvider);

        return authorizedClientManager;
    }
}

৪. WebClient ব্যবহার করে API কল করা

WebClient Bean ব্যবহার করে OAuth 2.0 টোকেন সহ API কল করা যেতে পারে।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.oauth2.client.annotation.RegisteredOAuth2AuthorizedClient;
import org.springframework.security.oauth2.client.web.reactive.function.client.ServletOAuth2AuthorizedClientExchangeFilterFunction;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;

@Service
public class ApiService {

    @Autowired
    private WebClient webClient;

    public String fetchProtectedData() {
        String url = "https://api.example.com/protected-resource";

        return webClient
                .get()
                .uri(url)
                .retrieve()
                .bodyToMono(String.class)
                .block(); // Blocking call for simplicity
    }
}

Token Based Authentication (Bearer Token)

OAuth 2.0 এর বাইরেও সরাসরি Bearer Token দিয়ে API অ্যাক্সেস করা সম্ভব।

Bearer Token এর জন্য WebClient কনফিগারেশন:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.function.client.WebClient;

@Configuration
public class WebClientConfig {

    @Bean
    public WebClient webClient() {
        return WebClient.builder()
                .defaultHeader("Authorization", "Bearer YOUR_ACCESS_TOKEN")
                .build();
    }
}

Bearer Token ব্যবহার করে API কল করা:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;

@Service
public class ApiService {

    @Autowired
    private WebClient webClient;

    public String fetchProtectedData() {
        String url = "https://api.example.com/protected-resource";

        return webClient
                .get()
                .uri(url)
                .retrieve()
                .bodyToMono(String.class)
                .block();
    }
}

উল্লেখযোগ্য বিষয়:

  1. OAuth 2.0 Workflow:
    • Client Credentials Grant Type: সার্ভার-টু-সার্ভার অ্যাপ্লিকেশনের জন্য আদর্শ।
    • Authorization Code Grant Type: ইন্টারঅ্যাকটিভ ইউজারের জন্য ব্যবহৃত হয়।
  2. Token Expiry Handling: WebClient স্বয়ংক্রিয়ভাবে টোকেন রিফ্রেশ করে না। যদি আপনার টোকেনের মেয়াদ শেষ হয়ে যায়, তাহলে রিফ্রেশ টোকেন ব্যবহারের ব্যবস্থা করতে হবে।
  3. Exception Handling: WebClient-এ .onStatus() ব্যবহার করে HTTP স্ট্যাটাস কোড চেক এবং এক্সসেপশন হ্যান্ডল করা যেতে পারে।

উদাহরণ রেসপন্স:

{
  "data": "This is a protected resource response.",
  "status": "success"
}

এভাবে, Spring Boot WebClient ব্যবহার করে OAuth 2.0 এবং Token Based Authentication ইমপ্লিমেন্ট করতে পারবেন।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion